<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    // Array => 构造函数  
    console.dir(Array);

    // 给数组绑定自定义方法 => 允许所的数组访问
    Array.prototype.a = 1;
    Array.prototype.b = 2;

    Array.prototype.say = function(){
        // this -> 调用此方法的实例化对象
        console.log(this);
    }

    Array.prototype._forEach = function(callback){
        // this -> 调用此方法的实例化对象
        // 遍历数组 
        for(var i=0;i<this.length;i++){
            var a = this[i];
            var b = i;
            var c = this;

            if(callback && typeof callback == "function"){
                callback(a,b,c)
            }
        }

    }


    var arr = new Array(1,4,7,2,5,8);
    console.log(arr);

    // 自己有找自己
    // console.log(arr[0]);
    // console.log(arr.length);

    // 自己没有的  =>  顺着原型属性[[Prototype]] 找 构造函数Array的原型对象 => 公共属性或方法
    // 所有的的实例化对象都有原型属性[[Prototype]] 指向构造函数的原型对象
    // console.log(arr.push);
    // arr.push(100);
    // console.log(arr);

    // 测试自定义属性 / 方法
    // console.log(arr.a);
    // console.log(arr.say);
    // arr.say();


    // arr._forEach(function(item,index,array){
    //     console.log(item,index,array);
    // })



    // 判断arr是否是数组
    console.log(arr instanceof Array);
    console.log(Array.isArray(arr));
    console.log(arr.constructor === Array);
    





</script>
</html>